package day04;

import java.util.*;

public class Mobile_test {
    public static void main(String[] args) {
        Scanner res = new Scanner(System.in);
        MapMobileAddressBook mapMobileAddressBook = new MapMobileAddressBook();
        boolean flag = true;
        while (flag) {
            String name;
            String number;
            String group;
            System.out.print("输入联系人姓名(quit表示退出):");
            name = res.next();
            if (name.equals("quit")) {
                flag = false;
                System.out.println("byebye");
                continue;
            }
            System.out.print("输入联系人电话号码:");
            number = res.next();
            System.out.print("输入联系人分组：同事(colleagues),家人(family),朋友(friends):");
            group = res.next();
            mapMobileAddressBook.addContactPerson(name, number, group);
            Set<Person> s = mapMobileAddressBook.getMap().get(group);
            mapMobileAddressBook.getMap().put(group, s);
        }
        System.out.println("通讯录（按名字排序）:");
        for (Set<Person> person : mapMobileAddressBook.getMap().values()) {
            for (Person person1 : person) {
                System.out.printf("%-8s%-8s%-8s\n", person1.getName(), person1.getNumber(), person1.getGroup());
            }
        }
        System.out.println();
        for (Map.Entry<String, Set<Person>> entry : mapMobileAddressBook.getMap().entrySet()) {
            System.out.println(entry.getKey() + "组内包含的联系人如下:");
            if (entry.getValue().size() == 0) {
                System.out.println("无");
                continue;
            }
            for (Person person : entry.getValue()) {
                System.out.printf("%-8s%-8s\n", person.getName(), person.getNumber());
            }
        }
    }
}


// 遍历 map
//        for (Map.Entry<String, Set<Person>> entry : mapMobileAddressBook.getMap().entrySet()) {
//String key = entry.getKey();
//Set<Person> valueSet = entry.getValue();
//            System.out.println("分组：" + key);
//            for (Person person : valueSet) {
//        System.out.println("  姓名：" + person.getName() + ", 电话号码：" + person.getNumber());
//        }
//        }
//        mapMobileAddressBook.getMap().entrySet()这行代码用于获取MapMobileAddressBook类中存储的Map对象的所有键值对集合（Set<Map.Entry<K,V>>）。
//具体解释如下：
//        mapMobileAddressBook.getMap()：
//这部分调用了MapMobileAddressBook类中的getMap()方法，该方法返回一个Map<String, Set<Person>>类型的Map对象。这个Map对象存储了联系人分组信息作为键，对应的一组Person对象集合作为值。
//        .entrySet()：
//对获取到的Map对象调用entrySet()方法，这个方法返回一个包含了该Map中所有键值对的集合。集合中的每个元素都是一个Map.Entry对象，这个对象表示一个键值对。通过遍历这个集合，可以访问到Map中的每一个键和对应的值。
//这样就可以在后续的代码中通过遍历这个集合来处理Map中的每一个分组以及该分组下的联系人信息。


//如果只想返回键，可以使用mapMobileAddressBook.getMap().keySet()，它会返回一个包含所有键的Set集合。
//如果只想返回值，可以使用以下方式：
//java
//        复制
//for (Set<Person> valueSet : mapMobileAddressBook.getMap().values()) {
//        // 这里 valueSet 就是每个键对应的 Set<Person> 值集合
//        for (Person person : valueSet) {
//        // 处理每个 Person 对象
//        }
//        }